package co.edu.usbcali.dataaccess.dao;

import co.edu.usbcali.modelo.Preinscripcion;

import java.math.BigDecimal;

import java.util.Date;
import java.util.List;
import java.util.Set;


/**
 * Interface for PreinscripcionDAO.
 *
 * @author Zathura Code Generator http://code.google.com/p/zathura
 */
public interface IPreinscripcionDAO {
    // property constants
    //public static final String  CARGOPRE = "cargoPre";
    public static final String CARGOPRE = "cargoPre";

    //public static final String  CARGOTUTORPRE = "cargoTutorPre";
    public static final String CARGOTUTORPRE = "cargoTutorPre";

    //public static final String  CELULARTUTORPRE = "celularTutorPre";
    public static final String CELULARTUTORPRE = "celularTutorPre";

    //public static final Long  CODPRE = "codPre";
    public static final String CODPRE = "codPre";

    //public static final String  DESCRIPCIONPRE = "descripcionPre";
    public static final String DESCRIPCIONPRE = "descripcionPre";

    //public static final Long  ESTADOPRE = "estadoPre";
    public static final String ESTADOPRE = "estadoPre";

    //public static final Date  FECHAFINALPRE = "fechaFinalPre";
    public static final String FECHAFINALPRE = "fechaFinalPre";

    //public static final Date  FECHAINICIOPRE = "fechaInicioPre";
    public static final String FECHAINICIOPRE = "fechaInicioPre";

    //public static final Date  FECHAPRE = "fechaPre";
    public static final String FECHAPRE = "fechaPre";

    //public static final String  LABORAPRE = "laboraPre";
    public static final String LABORAPRE = "laboraPre";

    //public static final String  LABORESPRE = "laboresPre";
    public static final String LABORESPRE = "laboresPre";

    //public static final String  LUGARLABORAPRE = "lugarLaboraPre";
    public static final String LUGARLABORAPRE = "lugarLaboraPre";

    //public static final String  NOMBRETUTORPRE = "nombreTutorPre";
    public static final String NOMBRETUTORPRE = "nombreTutorPre";

    //public static final String  OBJETIVOPRE = "objetivoPre";
    public static final String OBJETIVOPRE = "objetivoPre";

    //public static final String  TELEFONOTUTORPRE = "telefonoTutorPre";
    public static final String TELEFONOTUTORPRE = "telefonoTutorPre";

    //public static final String  TEMASPRE = "temasPre";
    public static final String TEMASPRE = "temasPre";

    /**
    * Perform an initial save of a previously unsaved Preinscripcion entity. All
    * subsequent persist actions of this entity should use the #update()
    * method. This operation must be performed within the a database
    * transaction context for the entity's data to be permanently saved to the
    * persistence store, i.e., database. This method uses the
    * {@link javax.persistence.EntityManager#persist(Object) EntityManager#persist}
    * operation.
    *
    * <pre>
    * EntityManagerHelper.beginTransaction();
    * IPreinscripcionDAO.save(entity);
    * EntityManagerHelper.commit();
    * </pre>
    *
    * @param entity
    *            Preinscripcion entity to persist
    * @throws RuntimeException
    *             when the operation fails
    */
    public void save(Preinscripcion entity);

    /**
    * Delete a persistent Preinscripcion entity. This operation must be performed
    * within the a database transaction context for the entity's data to be
    * permanently deleted from the persistence store, i.e., database. This
    * method uses the
    * {@link javax.persistence.EntityManager#remove(Object) EntityManager#delete}
    * operation.
    *
    * <pre>
    * EntityManagerHelper.beginTransaction();
    * IPreinscripcionDAO.delete(entity);
    * EntityManagerHelper.commit();
    * entity = null;
    * </pre>
    *
    * @param entity
    *            Preinscripcion entity to delete
    * @throws RuntimeException
    *             when the operation fails
    */
    public void delete(Preinscripcion entity);

    /**
    * Persist a previously saved Preinscripcion entity and return it or a copy of it
    * to the sender. A copy of the Preinscripcion entity parameter is returned when
    * the JPA persistence mechanism has not previously been tracking the
    * updated entity. This operation must be performed within the a database
    * transaction context for the entity's data to be permanently saved to the
    * persistence store, i.e., database. This method uses the
    * {@link javax.persistence.EntityManager#merge(Object) EntityManager#merge}
    * operation.
    *
    * <pre>
    * EntityManagerHelper.beginTransaction();
    * entity = IPreinscripcionDAO.update(entity);
    * EntityManagerHelper.commit();
    * </pre>
    *
    * @param entity
    *            Preinscripcion entity to update
    * @return Preinscripcion the persisted Preinscripcion entity instance, may not be the
    *         same
    * @throws RuntimeException
    *             if the operation fails
    */
    public Preinscripcion update(Preinscripcion entity);

    public Preinscripcion findById(Long id);

    /**
    * Find all Preinscripcion entities with a specific property value.
    *
    * @param propertyName
    *            the name of the Preinscripcion property to query
    * @param value
    *            the property value to match
    * @param rowStartIdxAndCount
    *            Optional int varargs. rowStartIdxAndCount[0] specifies the the
    *            row index in the query result-set to begin collecting the
    *            results. rowStartIdxAndCount[1] specifies the the maximum
    *            count of results to return.
    * @return List<Preinscripcion> found by query
        */
    public List<Preinscripcion> findByProperty(String propertyName,
        Object value, int... rowStartIdxAndCount);

    public List<Preinscripcion> findByCriteria(String whereCondition);

    public List<Preinscripcion> findByCargoPre(Object cargoPre);

    public List<Preinscripcion> findByCargoPre(Object cargoPre,
        int... rowStartIdxAndCount);

    public List<Preinscripcion> findByCargoTutorPre(Object cargoTutorPre);

    public List<Preinscripcion> findByCargoTutorPre(Object cargoTutorPre,
        int... rowStartIdxAndCount);

    public List<Preinscripcion> findByCelularTutorPre(Object celularTutorPre);

    public List<Preinscripcion> findByCelularTutorPre(Object celularTutorPre,
        int... rowStartIdxAndCount);

    public List<Preinscripcion> findByCodPre(Object codPre);

    public List<Preinscripcion> findByCodPre(Object codPre,
        int... rowStartIdxAndCount);

    public List<Preinscripcion> findByDescripcionPre(Object descripcionPre);

    public List<Preinscripcion> findByDescripcionPre(Object descripcionPre,
        int... rowStartIdxAndCount);

    public List<Preinscripcion> findByEstadoPre(Object estadoPre);

    public List<Preinscripcion> findByEstadoPre(Object estadoPre,
        int... rowStartIdxAndCount);

    public List<Preinscripcion> findByFechaFinalPre(Object fechaFinalPre);

    public List<Preinscripcion> findByFechaFinalPre(Object fechaFinalPre,
        int... rowStartIdxAndCount);

    public List<Preinscripcion> findByFechaInicioPre(Object fechaInicioPre);

    public List<Preinscripcion> findByFechaInicioPre(Object fechaInicioPre,
        int... rowStartIdxAndCount);

    public List<Preinscripcion> findByFechaPre(Object fechaPre);

    public List<Preinscripcion> findByFechaPre(Object fechaPre,
        int... rowStartIdxAndCount);

    public List<Preinscripcion> findByLaboraPre(Object laboraPre);

    public List<Preinscripcion> findByLaboraPre(Object laboraPre,
        int... rowStartIdxAndCount);

    public List<Preinscripcion> findByLaboresPre(Object laboresPre);

    public List<Preinscripcion> findByLaboresPre(Object laboresPre,
        int... rowStartIdxAndCount);

    public List<Preinscripcion> findByLugarLaboraPre(Object lugarLaboraPre);

    public List<Preinscripcion> findByLugarLaboraPre(Object lugarLaboraPre,
        int... rowStartIdxAndCount);

    public List<Preinscripcion> findByNombreTutorPre(Object nombreTutorPre);

    public List<Preinscripcion> findByNombreTutorPre(Object nombreTutorPre,
        int... rowStartIdxAndCount);

    public List<Preinscripcion> findByObjetivoPre(Object objetivoPre);

    public List<Preinscripcion> findByObjetivoPre(Object objetivoPre,
        int... rowStartIdxAndCount);

    public List<Preinscripcion> findByTelefonoTutorPre(Object telefonoTutorPre);

    public List<Preinscripcion> findByTelefonoTutorPre(
        Object telefonoTutorPre, int... rowStartIdxAndCount);

    public List<Preinscripcion> findByTemasPre(Object temasPre);

    public List<Preinscripcion> findByTemasPre(Object temasPre,
        int... rowStartIdxAndCount);

    /**
    * Find all Preinscripcion entities.
    *
    * @param rowStartIdxAndCount
    *            Optional int varargs. rowStartIdxAndCount[0] specifies the the
    *            row index in the query result-set to begin collecting the
    *            results. rowStartIdxAndCount[1] specifies the the maximum
    *            count of results to return.
    * @return List<Preinscripcion> all Preinscripcion entities
    */
    public List<Preinscripcion> findAll(int... rowStartIdxAndCount);

    public List<Preinscripcion> findPagePreinscripcion(String sortColumnName,
        boolean sortAscending, int startRow, int maxResults);

    public Long findTotalNumberPreinscripcion();
}
